function ListNode(val){
  this.val = val;
  this.next = null;
}

// 如果是两个节点, 只需要把后面节点的.next指向前一个即可

// 多个节点的话：
// 双指针一前一后遍历链表 反转双指针

//↓p2  ↓p1 ---> 反转一次 就整体向右移动1
//     node1  node2  node3  node4  node5

const reverseList = (head) => {
  let p1 = head;
  let p2 = null;

  while (p1){
    const tmp = p1.next; // 先保存起来 交换完后 再让p1继续往下走
    p1.next = p2; //在此反转

    p2 = p1;  //p2向右移动1
    p1 = tmp; //p1向右移动1
  }

  return p2;
};

//时间复杂: 有一个while循环体 时间复杂度为O(n)
//空间复杂度: 没有任何数组 和 矩阵, 空间复杂度也为O(1)
